package service;

import dao.TypeDao;
import model.Type;

import java.sql.SQLException;
import java.util.List;

public class TypeService {
    TypeDao td = new TypeDao();

    /**
     * 获取所有type表的数据
     *
     * @return List<Type> 返回一个集合
     */
    public List<Type> getTypeList() {
        List<Type> typeList = null;
        try {
            typeList = td.getTypeList();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return typeList;
    }

    /**
     * 添加一个类目名 必须数据库里面没有相同的名 会自动去除名字的前后空格
     *
     * @param typeName 类目的名字
     * @return boolean
     */
    public boolean addType(String typeName) {
        //去除前后空格
        typeName = typeName.trim();
        //值是否为空
        if ("".equals(typeName)) return false;

        try {
            //查找是否已经有了相同的名字
            boolean n = td.hasTypeName(typeName);
            //如果type已经有了相同的名直接返回
            if (n) return false;
            //没有的话添加到数据库
            return td.addType(typeName);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 更新类目名 必须数据库里面没有相同的名 会自动去除名字的前后空格
     *
     * @param id       typeid
     * @param typeName 要更新的名字
     * @return boolean
     */
    public boolean updataTypeName(int id, String typeName) {
        typeName = typeName.trim();
        //值是否为空
        if ("".equals(typeName)) return false;
        boolean flag = false;
        try {
            //是否数据库已经有了相同的名字
            boolean n = td.hasTypeName(typeName);
            if (n) return false;

            flag = td.updataTypeName(id, typeName);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;
    }

    /**
     * 删除type类目通过id
     *
     * @param id id
     * @return boolean true||false
     */
    public boolean deleteTypeById(int id) {
        try {
            return td.deleteTypeById(id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 获取type名通过id
     *
     * @param id id
     * @return 名||null
     */
    public Type getTypeNameById(int id) {
        try {
            return td.getTypeNameById(id);
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
}
